<?php

namespace common\models\business;

use common\models\db\Video;
use common\models\enu\ImageType;
use common\models\inter\InterBusiness;
use common\models\output\Response;

class VideoBusiness implements InterBusiness {

    /**
     * Menu
     * @param type $id
     * @return type
     */
    public static function get($id) {
        $video = Video::findOne($id);
        return $video;
    }
    public static function getWithImage($id) {
        $video = Video::findOne($id);
        $images = ImageBusiness::getByTarget($id, ImageType::VIDEO);
        $img = [];
        if (!empty($images)) {
            foreach ($images as $image) {
                array_push($img, $image->imageId);
            }
        }
        $video->images = $img;
        return $video;
    }

    public static function getAll($limit = '', $active = 0, $home = 0) {
        $videos = Video::find()->orderBy("position DESC");
        if (!empty($limit)) {
            $videos->limit($limit);
        }
        if ($active > 0) {
            $videos->andWhere(['=', 'active', $active == 1 ? 1 : 0]);
        }
        if ($home > 0) {
            $videos->andWhere(['=', 'home', $home == 1 ? 1 : 0]);
        }
        return $videos->all();
    }

    /**
     * mget
     * @param type $ids
     * @return type
     */
    public static function mGet($ids) {
        return Video::find()->andWhere(["id" => $ids]);
    }

    /**
     * Thay đổi trạng thái video
     * @param type $id
     */
    public static function changeActive($id) {
        $video = self::get($id);
        if ($video == null) {
            return new Response(false, "Video không tồn tại");
        }
        $video->active = $video->active == 1 ? 0 : 1;
        $video->save(false);
        return new Response(true, "Video " . $video->name . $video->active ? "đã mở khóa" : "đã khóa", $video);
    }

    public static function changeHome($id) {
        $video = self::get($id);
        if ($video == null) {
            return new Response(false, "Video không tồn tại");
        }
        $video->home = $video->home == 1 ? 0 : 1;
        $video->save(false);
        return new Response(true, "Video " . $video->name . $video->active ? "đã hiển thị" : "đã khóa", $video);
    }

    /**
     * Change position video theo id
     * @param type $id
     */
    public static function changePosition($id, $position) {
        $video = self::get($id);
        if ($video == null) {
            return new Response(false, "Video không tồn tại");
        }
        $video->position = $position;
        if (!$video->save(false)) {
            return new Response(false, "Thay đổi trạng thái hiển thị không thành công", $video->errors);
        }
        return new Response(true, "Thay đổi trạng thái hiển thị thành công", $video);
    }

    /**
     * Xóa video theo id
     * @param type $id
     */
    public static function remove($id) {
        $video = self::get($id);
        if ($video == null) {
            return new Response(false, "Video không tồn tại");
        }
        $video->delete();
        return new Response(true, "Xóa video thành công");
    }

}
